/**
 * 深度克隆
 * @param obj 克隆对象
 */
function deepClone(obj: any) {
    // 对常见的“非”值，直接返回原来值
    if ([null, undefined, NaN, false].includes(obj)) return obj;
    if (typeof obj !== 'object' && typeof obj !== 'function') {
        //原始类型直接返回
        return obj;
    }
    const o: any = Array.isArray(obj) ? [] : {};
    for (const i in obj) {
        if (obj.hasOwnProperty(i)) {
            o[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i];
        }
    }
    return o;
}

export default deepClone;
